Manipulate[
Show[
ContourPlot3D[x^2+y^2==4,{x,-2,2},{y,-2,2},{z,-3,3},Mesh->False,BoundaryStyle->None,ContourStyle->{Green,Opacity[0.5]},PlotRange->{{-4,4},{-4,4},{-4,4}},Axes->False,ImageSize->600],
ContourPlot3D[x^2+y^2+z^2==8,{x,-3,3},{y,-3,3},{z,-3,3},Mesh->False,BoundaryStyle->None,ContourStyle->{Orange,Opacity[0.5]}],
ParametricPlot3D[{2*Cos[t],2*Sin[t],2},{t,0,2*π},PlotStyle->{Red, Thick}],
ParametricPlot3D[{2*Cos[t],2*Sin[t],-2},{t,0,2*π},PlotStyle->{Red, Thick}],
Graphics3D[{Red,Thick,Arrowheads[.015],Arrow[{{2,0,2},{3,0,2.5}}]}],
Graphics3D[{Orange,Thick,Arrowheads[.015],Arrow[{{2,0,2},{4,0,4}}]}],
Graphics3D[{Green,Thick,Arrowheads[.015],Arrow[{{2,0,2},{4,0,2}}]}],
ParametricPlot3D[{2+2*s+2*t,0,2+2*s},{s,-3,3},{t,-3,3},PlotStyle->{Cyan,Opacity[P]},Mesh->False]
],{{P,0,"Show Plane Determined by ∇f and ∇g"},{0,0.5}}]

Manipulate[
Show[
ContourPlot3D[z^2==x^2+y^2,{x,-3,3},{y,-3,3},{z,-3,3},ContourStyle->{Cyan,Opacity[0.5]},BoundaryStyle->None,Mesh->False,PlotRange->{{-4,4},{-4,4},{-4,4}},AxesOrigin->{0,0,0}],
(*Circle*)
ContourPlot3D[z==1,{x,-4,4},{y,-4,4},{z,-3,3},BoundaryStyle->None,ContourStyle->{Pink,Opacity[0.5*C]},Mesh->False],
ParametricPlot3D[{Cos[t],Sin[t],1},{t,0,2π},PlotStyle->{Red,Thick,Opacity[C]}],
(*Ellipse*)
ContourPlot3D[z==-(1/4)*y+(3/2),{x,-4,4},{y,-4,4},{z,-4,4},BoundaryStyle->None,ContourStyle->{Pink,Opacity[0.5*E]},Mesh->False],
ParametricPlot3D[{(1/2)(Sqrt[-(15/4)*y^2-3*y+9]),y,-(1/4)(y-6)},{y,-3,3},PlotStyle->{Red,Thick,Opacity[E]}],
ParametricPlot3D[{-(1/2)(Sqrt[-(15/4)*y^2-3*y+9]),y,-(1/4)(y-6)},{y,-3,3},PlotStyle->{Red,Thick,Opacity[E]}],
(*Hyperbola*)
ContourPlot3D[x==1,{x,-4,4},{y,-4,4},{z,-4,4},BoundaryStyle->None,ContourStyle->{Pink,Opacity[0.5*H]},Mesh->False],
ParametricPlot3D[{1,y,(Sqrt[y^2+1])},{y,-3,3},PlotStyle->{Red,Thick,Opacity[H]}],
ParametricPlot3D[{1,y,-(Sqrt[y^2+1])},{y,-3,3},PlotStyle->{Red,Thick,Opacity[H]}],
(*Parabola*)
ContourPlot3D[z==x-1,{x,-4,4},{y,-4,4},{z,-4,4},BoundaryStyle->None,ContourStyle->{Pink,Opacity[0.5*P]},Mesh->False],
ParametricPlot3D[{-(1/2)*(y^2-1),y,-(1/2)*(y^2-1)-1},{y,-3,3},PlotStyle->{Red,Thick,Opacity[P]}]
],
{{C,0,"Show Circle"},{0,1}},{{E,0,"Show Ellipse"},{0,1}},{{H,0,"Show Hyperbola"},{0,1}},{{P,0,"Show Parabola"},{0,1}}]

Show[
ContourPlot3D[z^2==x^2+y^2,{x,-7,7},{y,-7,7},{z,-9,5},ContourStyle->{Cyan,Opacity[0.5]},BoundaryStyle->None,Mesh->False,PlotRange->{{-7,7},{-7,7},{-9,5}},AxesOrigin->{0,0,0}],
ContourPlot3D[z==x+y+2,{x,-15,15},{y,-15,15},{z,-15,15},ContourStyle->{Yellow,Opacity[0.6]},BoundaryStyle->None,Mesh->False]
]

Manipulate[
Module[
{xr,yr,func,pFunc0,pFunc1,off,dx,dy,pRiemannCubes,riemannSum,volume},
xr:=Switch[ww,1,{-2,2},2,{0,1},3,{0,5},4,{0,Pi}];
yr:=Switch[ww,1,{1,3},2,{0,1},3,{0,5},4,{0,Pi}];
func[x_,y_]:=Switch[ww,1,5,2,4-2*y,3,x^2+y^2,4,y*Sin[x]];
pFunc0:=Plot3D[func[x,y],{x,xr[[1]], xr[[2]]},{y,yr[[1]], yr[[2]]},Mesh->None,PlotStyle->{RGBColor[0,0,0.75],Opacity[op0]}];
pFunc1:=Plot3D[func[x,y],{x,xr[[1]], xr[[2]]},{y,yr[[1]], yr[[2]]},Mesh->None,PlotStyle->{RGBColor[0,0,0.75]}];
(* Compute *)
off:=If[offset<0,0,If[offset>1,1,offset]];
dx :=((xr[[2]]-xr[[1]])/m);
dy :=((yr[[2]]-yr[[1]])/n);
pRiemannCubes:=Graphics3D[Table[{
RGBColor[{i+j,0,j}/(m+n-1)],Opacity[0.7],
Cuboid[
{xr[[1]]+i*dx,yr[[1]]+j*dy,0},
{xr[[1]]+(i+1)*dx,yr[[1]]+(j+1)*dy,func[xr[[1]] + (i+ off)*dx, yr[[1]]+(j+off)*dy]}
]},{i,0,m-1},{j,0,n-1}]];
Grid[{
{Show[pRiemannCubes,pFunc0,ImageSize->400,BoxRatios->{1,1,1}],Show[pFunc1,ImageSize->400,BoxRatios->{1,1,1}]}
}]
],
{{ww,1,Text[Style["Which function:"]]},1,4,1},
{{m,4,Text[Style["Number of partitions of x (m):"]]},1,10,1},
{{n,4,Text[Style["Number of partitions of y (n):"]]},1,10,1},
{{offset,0,Text[Style["Sample point offset:"]]},0,1},
{{op0,0.5,Text[Style["Opacity of Surface:"]]},0,1}
]